package br.com.sgdee.mb;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.bean.ManagedBean;
import javax.persistence.PersistenceException;

import br.com.sgdee.bo.remote.EntidadeBORemote;
import br.com.sgdee.dto.EntidadeDTO;
import br.com.sgdee.entidades.acesso.Entidade;
import br.com.sgdee.mb.generic.GenericoBean;

@ManagedBean
@RequestScoped
public class ManterEntidadeMB extends GenericoBean implements Serializable {

	/**
	 * 
	 */

	private static final long serialVersionUID = 4018825859453480067L;

	private final String PATH_MANTER_ENTIDADE = "manterEntidade";
	private final String PATH_LISTAR_ENTIDADE = "listarEntidades";

	// private Logger LOG = Logger.getLogger(ManterEntidadeMB.class);

	@EJB
	private EntidadeBORemote entidadeBO;

	private EntidadeDTO filtro;

	private Entidade entidade;

	private List<Entidade> listaEntidade;

	/**
	 * Método público que recarrega a lista de entidades cadastradas
	 * 
	 */
	public void recuperarListaEntidades() {
		carregarListaEntidades();
	}

	/**
	 * Método privado na qual carrega a lista de entidades cadastradas
	 * 
	 */
	private void carregarListaEntidades() {
		try {
			getListaEntidade().clear();

			setListaEntidade(this.entidadeBO.recuperarTodosFiltro(getFiltro()));

		} catch (PersistenceException e) {
			// LOG.error("Erro ao pesquisar Entidade.", e);
		}
	}

	/**
	 * Métodos pesquisar entiades
	 * 
	 */
	public void pesquisarEntidades() {

		carregarListaEntidades();

	}

	/**
	 * Método de cadastrar entidades
	 * 
	 * @return
	 */
	public String comandoCadastrar() {

		return PATH_MANTER_ENTIDADE;
	}

	/**
	 * Método de Editar entidades
	 * 
	 * @return
	 */
	public String comandoEditar() {

		return PATH_MANTER_ENTIDADE;
	}

	/**
	 * Método de retorno para a lista de entidades cadastradas
	 * 
	 * @return
	 */
	public String comandoVoltar() {

		return PATH_LISTAR_ENTIDADE;

	}

	/**
	 * Método de comando, que permite alterar do dados
	 * 
	 */
	public void comandoAlterar() {

	}

	/**
	 * Método de excluir pessoas
	 * 
	 * @return
	 */
	public void comandoExcluir() {

	}

	/**
	 * Método de comando, que permite somente visualizar os dados
	 * 
	 */
	public void comandoVisualizar() {

	}

	/**
	 * Getters e Setters
	 * 
	 */

	public EntidadeDTO getFiltro() {
		if (filtro == null) {
			filtro = new EntidadeDTO();
		}
		return filtro;
	}

	public void setFiltro(EntidadeDTO filtro) {
		this.filtro = filtro;
	}

	public Entidade getEntidade() {
		if (entidade == null) {
			entidade = new Entidade();
		}
		return entidade;
	}

	public void setEntidade(Entidade entidade) {
		this.entidade = entidade;
	}

	public List<Entidade> getListaEntidade() {
		if (listaEntidade == null) {
			listaEntidade = new ArrayList<Entidade>();
		}
		return listaEntidade;
	}

	public void setListaEntidade(List<Entidade> listaEntidade) {
		this.listaEntidade = listaEntidade;
	}
}
